package com.dragon.loan.service;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import com.dragon.loan.entity.AcApplyEnvironmentInfo;
import com.dragon.loan.entity.AcCaseStatusTrace;
import com.dragon.loan.entity.AcLoanApplyInfo;
import com.dragon.loan.entity.AcLoanApplyLinkman;
import com.dragon.loan.entity.McamAcLoanApplyBdInfo;
import com.dragon.loan.entity.McamAcLoanApplyImageInfo;
import com.dragon.loan.entity.McamLoanApplyInfo;

/**
 * 贷款申请服务
 * @author xiaoyifan
 * @since 2017-02-06
 */
public interface LoanInfoIDragonService {
	
	/**
	 * 查询贷款的基本信息（业务申请信息、客户基本信息、工作信息）
	 * @param loanId 业务标识Id（贷款申请编号）
	 * @return
	 */
	public AcLoanApplyInfo queryLoanBasicInfo(String loanId);
	
	/**
	 * 贷款申请的录入(业务申请信息录入、客户基本信息录入、工作信息录入、联系人信息录入、保单信息录入)<br>
	 * 该方法已经不建议使用，后续建议分别调用acLoanApplyInfoService的新增贷款，修改贷款;acLoanApplyLinkmanService的增加联系人<br>
	 * acLoanApplyBxInfoService的增加保单信息。此类功能已经移到以上3类中4个方法中
	 * @param acLoanApplyInfo
	 */
	@Deprecated
	public void input(AcLoanApplyInfo acLoanApplyInfo);
	
	/**
	 * 修改贷款申请的状态
	 * @param loanId 贷款编号
	 * @param status 状态
	 * @return 是否修改成功
	 */
	public boolean updateLoanStatus(String loanId,String status);
	
	/**
	 * 根据身份证来查询是否有正在进行的loanId
	 * @param identityCard
	 * @return
	 */
	String selectCustApplyingLoanId(String identityCard);
	
	/**
	 * 根据loandid查询借据
	 * @param loanid
	 * @return
	 */
	public Map<String,Object> queryDebt(String loanid);
	
	/**
	 * 借款记录
	 * @param userInfo
	 * @return
	 */
	public List<Map<String,String>>  borrowList(String userInfo);
	
	/**
	 * 根据身份证来查询是否有正在进行的贷款
	 * 判断这次申请是否准入
	 * @param identityCard
	 * @return
	 */
	String selectCustApplyingStatus(String identityCard);
	
	/**
	 * 通过证件号码查询所有结清的单
	 * 
	 * @param identityCardNo
	 * @return
	 */
	public List<Map<String, Object>> querySettleLoan(String identityCardNo);
	
	/**
	 * 审核拒绝N天内不允许再次进件
	 * @param custIdCard
	 * @param days
	 * @return
	 */
	public boolean isPassRule(String custIdCard, Integer days);
	
	/**
	 * 	 * 黑名单验证
	 * @param identityCard  身份证号  *
	 * @return
	 */
	public String blackListVerifyNew(String identityCard, String mobile);
	
	/**
	 * 生成贷款编号
	 * @return
	 */
	public String generateLoanId();
	
	/**
	 * 根据身份证来查询存在多少正在进行的贷款
	 * 判断这次申请是否准入
	 * @param identityCard
	 * @param classify 产品分类(null不限、1现金贷、 2分期贷)
	 * @return loanId list
	 */
	List<Map<String, String>> selectCustApplyingStatus(String identityCard, String classify);
	
	/**
	 * 插入这个申请环境信息
	 * @param acApplyEnvironmentInfo
	 */
	public void insertAcApplyEnvironmentInfo(AcApplyEnvironmentInfo acApplyEnvironmentInfo);
	
	/**新核心同步贷款信息
	 * @author 何杰
	 * 2018年5月16日
	 * @param loanId
	 * @return
	 */
	public McamLoanApplyInfo synchronizeLoanApplyInfo(String loanId);
	
	/***
	 * 新核心同步保单信息
	 * @param loanId
	 * @return
	 */
	public List<McamAcLoanApplyBdInfo> synchronizeLoanApplyBxInfo(String loanId);
	
	/***
	 * 新核心同步映像文件信息
	 * @param loanId
	 * @return
	 */
	public List<McamAcLoanApplyImageInfo> synchronizeLoanApplyImageInfo(String loanId);
	
	/**
	 * 联系人列表查询
	 * @param loanId 业务标识Id（贷款申请编号）
	 * @return
	 */
	public List<AcLoanApplyLinkman> queryLinkmanList(String loanId);
	
	/**
	 * 查询贷款信息
	 * @param map
	 * @return
	 */
	public Map<String, Object> queryLoanInfoByCondition(Map<String,Object> map);
	
	
	/**
	 * 查询贷款进度详情(时间轴展示)
	 * @param loanId 贷款编号
	 * @return
	 */
	public List<AcCaseStatusTrace> queryLoanProgerss(String loanId);
	
	/**
	 * 根据手机号前六位找到他的归属地
	 * @param mobileSix  手机号前六位
	 * @return
	 */
	Map<String, Object> selectAttributionByMobileSix(String mobileSix);
}


